<!DOCTYPE html>
<html>

	<head>
		<meta charset="UTF-8">
		<title></title>

		<script type="text/javascript">
			//有N堆纸牌，编号分别为1，2，…，n。每堆上有若干张,
			//但纸牌总数必为n的倍数.可以在任一堆上取若干张纸牌,然后移动。
			//移牌的规则为：在编号为1上取的纸牌，只能移到编号为2的堆上；
			//在编号为n的堆上取的纸牌，只能移到编号为n-1的堆上；
			//其他堆上取的纸牌，可以移到相邻左边或右边的堆上。
			//现在要求找出一种移动方法，用最少的移动次数使每堆上纸牌数都一样多。
			//例如：n=4，4堆纸牌分别为：① 9 ② 8 ③ 17 ④ 6 、
			//移动三次可以达到目的：从③取4张牌放到④ 再从③区3张放到②然后从②去1张放到①。
			//输入输出样例：4
			//9 8 17 6
			//屏幕显示：3

			function put(n, m) {
				c = n * m;
				//1、先把牌平分到堆

				arr = Array(n);
				//	document.write("<br>1.");
				for(var i = 0; i < n; i++) {
					arr[i] = m;
					//	document.write(m + '- ');
				}
				//	document.write("<br>");
				//2、随机挪动牌到不同的堆上

				for(var i = 0; i < n; i++) {
					j = Math.floor((Math.random() * n));

					//	document.write(j + '：'+i+'- ');
					t = arr[i];
					k = Math.floor((Math.random() * t));
					arr[j] = arr[j] + k;
					arr[i] = arr[i] - k;
				}

				//3、显示一下每堆的数量
				// 	document.write("<br>3.  ");
				// 	for (var i=0;i<n;i++){
				// 	
				// 		document.write(arr[i] + '- ');
				// 	}
				// 	document.write("<br>");
				return arr;
			}

			//put(2,9);
			//document.write(Math.floor((Math.random()*7)));

			function average(arr) {
				n = count(arr);
				v = n / arr.length;
				for(var i = 0; i < arr.length; i++) {
					document.write(arr[i] + '- ');
				}
				document.write("<br>");
				document.write("移动顺序如下：<br>");
				move(arr, 0, 0, 0, v);
			}

			function move(arr, i, flag, que, v) {
				//前一个比后一个 多 了？ ，还是少了？
				ca = v - arr[i];
				que = que - ca;
				//确认移动的方向
				if(que < 0)
					flag = 1;
				else if(que > 0)
					flag = -1;
				else
					flag = 0;
				//遍历  
				if(i < arr.length) {
					i++;
					move(arr, i, flag, que, v);
					switch(flag) {
						//case 0:	document.writeln(i+'['+Math.abs(que)+']'+(i+1)+'<br>');	break;
						case 1:
							document.writeln(i + '<' + Math.abs(que) + '<' + (i + 1) + '<br>');
							break;
						case -1:
							document.writeln(i + '>' + Math.abs(que) + '>' + (i + 1) + '<br>');
							break;
					}
				}

				//				if(flag>0){
				//					arr[i]=arr[i]-que;
				//					arr[i-1]=arr[i-1]+que;
				//				}
				//				if(flag<0){
				//					arr[i]=arr[i]-que;
				//					arr[i+1]=arr[i+1]+que;
				//				}
				//arr[i]=arr[i]-que;
				//arr[i-flag]=arr[i-flag]+que;
			}

			function count(arr) {
				n = 0
				for(i = 0; i < arr.length; i++) {
					n += arr[i];
				}
				return n;
			}
			arrt = put(8, 9);
			average(arrt);
		</script>
	</head>

	<body>
	</body>

</html>